/*
 * 项目:	ofs.biz  
 * 文件:	GenericTokenParserUtil.java  
 * 包名:	com.qjdchina.ofs.common.msg  
 * 日期:	2016年3月28日下午2:48:08  
 * 版权：Copyright (c) 2016, qjdchina.com All Rights Reserved.  
 *  
 */

package com.qjdchina.sku.web.common;

import java.util.Map;

import com.qjdchina.sku.service.enums.SkuResultCode;
import org.apache.ibatis.parsing.GenericTokenParser;
import org.apache.ibatis.parsing.TokenHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.qjdchina.commons.result.Result;


/**
 * 
 * 类名:GenericTokenParserUtil    
 * 功能:OFS中消息(待办)文案及链接解析工具类     
 * 日期: 2016年3月28日 下午2:56:38    
 * @author wangzheng  
 * @version 1.0.0   
 * @since  JDK 1.7  
 * @see
 */
public class GenericTokenParserUtil {

    private static final Logger LOGGER = LoggerFactory.getLogger(GenericTokenParserUtil.class);


    /**
     * 
     * 解析占位符   
     * @author wangzheng 2016年4月11日 上午9:46:40   
     * @param content
     * @param dataMap
     * @return  
     * @since JDK 1.7
     */
    public static Result<String> parse(String content, final Map<String, String> dataMap) {
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("before parse content:{}, dataMap:{}", content, dataMap);
        }
        String result = null;
        try {
            GenericTokenParser parser = new GenericTokenParser("${", "}", new TokenHandler() {

                public String handleToken(String content) {
                    if (dataMap.containsKey(content)) {
                        return dataMap.get(content);
                    }
                    throw new NullPointerException();
                }

            });

            result = parser.parse(content);
        } catch (Exception e) {
            LOGGER.error("parse error !", e);
            return new Result<String>(SkuResultCode.DATA_ERROR);
        }
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("after parse content:{}", content);
        }
        return new Result<String>(result);
    }


}
